public AutoFormsRecognizeFormResult RecognizeForm(
RasterImage form,
List<IMasterFormsCategory> categories
)
form
Form image.
categories
List of Master Forms categories to use in comparison, pass null or empty to use all Master Forms in the repository.
The result of the recognition will be the result of the Master Form with maximum confidence. If the confidence is less than MinimumConfidenceKnownForm it will return null, i.e. the form type is unknown and cannot be recognized.
If RecognizeFirstPageOnly is true, the type of the form will be recognized based only on the first page of the form. If it is false the recognition will be done using all form image pages.
The form should have all form pages if RecognizeFirstPageOnly is set to false.
If all Master Forms have a different first page, then recognizing the form according to its first page will be faster.
The recognition of the form will stop comparing the form with other Master Forms either when the confidence of the recognition result is greater or equal to MinimumConfidenceRecognized or when the Master Forms have all been compared.
The result of the recognition will be the result of the Master Form with maximum confidence. If the confidence is less than MinimumConfidenceKnownForm it will return null, i.e. the form type is unknown and cannot be recognized.
This method is useful when you have unknown forms and you want to recognize the types of these forms to archive, classify, and process.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Forms.Common;
using Leadtools.Forms.Auto;
using Leadtools.Document;
using Leadtools.Ocr;
using Leadtools.Forms.Recognition;
using Leadtools.Forms.Processing;
using Leadtools.Barcode;
using Leadtools.Forms;
public void MyProgressEvent(object sender, AutoFormsProgressEventArgs e)
{
Console.WriteLine("Operation: {0} {1}%", e.Operation, e.Percentage);
}
public void AutoFormRecognitionAndProcessing1()
{
string root = Path.Combine(LEAD_VARS.ImagesDir, @"Forms\FormsDemo\OCR_Test");
RasterCodecs codecs = new RasterCodecs();
//create repository
DiskMasterFormsRepository repository = new DiskMasterFormsRepository(codecs, root);
using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD))
{
ocrEngine.Startup(null, null, null, LEAD_VARS.OcrLEADRuntimeDir);
BarcodeEngine barcodeEngine = new BarcodeEngine();
AutoFormsEngine autoEngine = new AutoFormsEngine(repository, ocrEngine, barcodeEngine, 30, 80, true);
autoEngine.Progress += MyProgressEvent;
//Load the first page of the for,
RasterImage form = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, @"Forms\Forms to be Recognized\OCR\FCC-107_OCR_Filled.tif"),
1, CodecsLoadByteOrder.Bgr, 1, 1);
//recognize the form
AutoFormsRecognizeFormResult result = autoEngine.RecognizeForm(form, null);
if (result == null)
return;
//check if we have all pages
if (form.PageCount != result.Properties.Pages)
{//load the remaining pages of the form
form.AddPages(codecs.Load(FormFileName, 1, CodecsLoadByteOrder.Bgr, 2, -1), 1, -1);
}
//get form fields
FormPages formFields = result.MasterForm.ReadFields();
FormRecognitionAttributes attributes = result.MasterForm.ReadAttributes();
//process form
autoEngine.ProcessForm(form, null, null, attributes, formFields);
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
public const string OcrLEADRuntimeDir = @"C:\LEADTOOLS23\Bin\Common\OcrLEADRuntime";
}